#pragma once

#include <vector>
#include <iostream>

#include "Game.h"
#include "Vehiculo.h"
//#include "Persecutor.h"
#include "FatBoy.h"

//Identificadores para las imagenes(sf::Image) almacenadas
//en el mapa m_ManagerDeImagenes
//enum IDImagen{VehiculoParticula,VehiculoParticulaCobarde};
  enum IDImagen{VehiculoFatBoy,VehiculoBurger};

//Clase principal del juego, contiene toda la estructura de juego
//Este objeto sera el responsable de:
//	-Crear la escena
//	-Dibujar la pantalla
//	-Actualizar el juego
class MiGame: public Game
{
private:

	MiGame();

	MiGame(const MiGame& cpy);

	MiGame& operator=(const MiGame& cpy);

	//Persecutor* m_pPersecutor;
	//Vehiculo*   m_pPresa;
 FatBoy* m_pFatBoy;
 //std::vector<FatBoy*> m_pFatBoys; //una vez que funcione con uno lo cambio al vector de fatboys
 Vehiculo* m_pBurger;
 sf::Clock m_clock;
 float timer;
 bool conteo;

 //-------obstaculos y paredes-------//
 std::vector<EntidadEscena*> Obstaculos;
 std::vector<SteeringBehaviors::Pared*> Paredes;
 std::vector<EntidadEscena*> ParedesEscena;

public:
	//Nos devuelve la unica instancia de la clase
	static MiGame* Singleton();

	~MiGame();

	//================================================
	/////////	Game Propiedades publicas	 /////////
	//================================================

	std::map<IDImagen,sf::Image> m_ManagerDeImagenes;

	//================================================
	/////////////	 Game Metodos		 /////////////
	//================================================

	//Crea la escena
	virtual void CrearEscena();

	//Actualiza la escena
	virtual void Actualizar();

	//Dibuja la escena
	virtual void Dibujar();

	//Carga los recursos a usar
	virtual void LoadRecursos();
};